﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace Formation_Entreprise
{
    /// <summary>
    /// La classe ManipulationFichier contient les fonctions utilisées dans
    /// le programme afin de boujer les dossier et les fichiers qu'ils contienent
    /// </summary>
    class ManipulationFichier
    {
        /// <summary>
        /// Methode RemplirListBox remplit la Listbox avec les fichiers contenu dans 
        /// le repertoire reçu.
        /// </summary>
        /// <param name="repertoire">Le repertoire contenant les fichiers.</param>
        /// <param name="listbox">Le listbox à remplir.</param>
        public void RemplirListBox(string repertoire, ListBox listbox) 
        {
            // Vider la listbox afin d'éviter les dédoublements aux rafraichissements
            listbox.Items.Clear();


            try
            {
                // Tableau de fichiers contenu dans le repertoire.
                string[] files = Directory.GetFiles(repertoire);

                // POUR CHAQUE fichier dans le repertoire
                foreach (string file in files)
                {
                    // Ajouter le fichier au listbox
                    listbox.Items.Add(Path.GetFileName(file));
                }
            }
            catch (ArgumentException argEx)
            {
                MessageBox.Show("Le repertoire de l'entreprise a laquelle vous tenter d'accéder n'est pas disponible." +
                    " Contacter l'administrateur afin de le changer ou vérifier que les accès de fichier qui vous sont" +
                    " conférés sont suffisant.");
            }
            catch (DirectoryNotFoundException dirEx)
            {
                MessageBox.Show("Le repertoire de l'entreprise a laquelle vous tenter d'accéder n'est pas disponible." +
                    " Contacter l'administrateur afin de le changer ou vérifier que les accès de fichier qui vous sont" +
                    " conférés sont suffisant.");
            }
        }


        /// <summary>
        /// DeplacementRepertoire() est utiliser afin de changer le place un dossier et son contenu
        /// </summary>
        /// <param name="sourcePath">Repertoire source</param>
        /// <param name="destinationPath">Repertoire de destination</param>
        public static void DeplacementRepertoire(string sourcePath, string destinationPath) 
        {
            // SI le repertoire existe
            if (Directory.Exists(sourcePath))
            {
                // Tableau de fichiers contenu dans le repertoire.
                string[] fichiers = Directory.GetFiles(sourcePath);

                // POUR CHAQUE fichier dans le repertoire
                foreach (string fichier in fichiers)
                {
                    // On procede à bouger le fichier dans le nouveau dossier
                    string fileName = Path.GetFileName(fichier);

                    File.Move(fichier, Path.Combine(destinationPath, fileName));
                }            
            }
        }
    }
}
